/**
 * @file
 * @author  Tsin Smith <tsin.creator@gmail.com>
 *
 */

#ifndef __TSIN_INPUT_INPUTEVENT_HPP__
#define __TSIN_INPUT_INPUTEVENT_HPP__

#include <tsin/input/common.hpp>

namespace tsin {

        /**
         * @class InputEvent
         * @inclass input
         */
        enum EventType {
                INPUT_EVENT_GAME_CTRL = 0,
                INPUT_EVENT_PLAYER_MOVEMENT,
                INPUT_EVENT_PLAYER_ACTION
        };

        enum GameControlEvent {
                GAME_CTRL_EXIT = 0,
                GAME_CTRL_PAUSE
        };

        struct InputEvent {
                EventType type;
                union {
                        struct {
                                GameControlEvent event;
                        } gameControl;
                        struct {
                                int x, y;
                                int slow;
                        } movement;
                } data;
        };

}

#endif /* __TSIN_INPUT_INPUTEVENT_HPP__ */
